import request from "@/utils/request";

/**
 * 获取角色管理列表服务
 * @param {Object} params - 请求参数对象
 * @returns {Promise} 返回一个Promise对象，包含角色列表信息
 */
export const roleMgrListService = (params) => {
  return request.get("/admin/sys-role/pages", { params });
};

/**
 * 添加角色管理服务
 * @param {Object} data - 包含角色信息的数据对象
 * @returns {Promise} 返回一个Promise对象，标识角色添加操作的成功或失败
 */
export const roleMgrAddService = (data) => {
  return request.post("/admin/sys-role/save", data);
};

/**
 * 更新角色管理服务
 * @param {Object} data - 包含更新角色信息的数据对象
 * @returns {Promise} 返回一个Promise对象，标识角色更新操作的成功或失败
 */
export const roleMgrUpdateService = (data) => {
  return request.put("/admin/sys-role/update", data);
};

/**
 * 删除角色管理服务
 * @param {String} id - 角色的唯一标识符
 * @returns {Promise} 返回一个Promise对象，标识角色删除操作的成功或失败
 */
export const roleMgrDeleteService = (data) => {
  return request.delete(`/admin/sys-role/batchRemove`, { data });
};

/**
 * 更新角色状态的服务函数
 * @param {string} id - 角色的唯一标识符
 * @param {string} status - 需要更新的角色状态
 * @returns {Promise} - 返回一个Promise对象，用于处理请求的结果
 */
export const roleMgrUpdateStatusService = (id, status) => {
  return request.put(`/admin/sys-role/updateStatus/${id}/${status}`);
};

/**
 * 查询用户的所属角色的服务函数
 * @param {string} userId - 需要分配角色的用户ID
 * @returns {Promise} 返回一个Promise对象，它解析为角色查询结果
 */
export const roleMgrDoAssignListService = (userId) => {
  // 向服务器发送请求，查询所有可分配给指定用户的角色
  return request.get(`/admin/sys-role/findAllRoles/${userId}`);
};

/**
 * 向服务器发送请求，为用户分配角色
 * @param {Object} data - 包含分配角色所需的数据
 * @returns {Promise} 返回一个Promise对象，成功则返回分配结果，失败则返回错误信息
 */
export const roleMgrDoAssignRoleService = (data) => {
  // 发送POST请求，完成角色分配
  return request.post(`/admin/sys-user/doAssign`, data);
};

/**
 * 根据角色ID查询该角色已分配的菜单ID列表
 * @param {String} roleId - 角色的唯一标识符
 * @returns {Promise} 返回一个Promise对象，成功则返回菜单ID列表，失败则返回错误信息
 */
export const roleMgrMenuService = (roleId) => {
  // 发送GET请求，查询角色分配的菜单
  return request.get(`/admin/sys-role-menu/findSysRoleMenuByRoleId/${roleId}`);
};
/**
 * 保存角色分配菜单数据接口
 * @param {Object} data - 包含需要保存的角色菜单分配数据
 * @returns {Promise} 返回一个Promise对象，用于处理请求的结果
 */
export const roleMgrSaveService = (data) => {
  // 发送POST请求，保存角色分配的菜单
  return request.post(`/admin/sys-role-menu/doAssign`, data);
};
